package com.yinquan.util;

import java.io.File;
import java.io.IOException;

import com.yishun.springboot.dao.CWRServiceTest;

import lombok.extern.slf4j.Slf4j;

/** 
*
* @author 95664
* @date 2022年4月16日 上午11:17:43
*/

@Slf4j
public class FileUtill {

	/**
	 * 获取文件名
	 * 1.jpg
	 * @param pathName
	 * @param regPathType 路径符号类型，可选\\
	 * @return
	 */
	public static String getFileName(String pathName,String regPathType) {
		try {
			pathName = pathName.trim();  
		} catch (Exception e) {
			log.info("getFileName异常："+pathName+","+regPathType);
		}
   	  
        String temp[] = pathName.split("\\"+regPathType); /**split里面必须是正则表达式，"\\"的作用是对字符串转义*/  
  
        String fileName = temp[temp.length-1];  
        
        log.info("fileName = " + fileName);
        
        return fileName;
	}
	
	/**
	 * 获取文件路径
	 *  C:\Users\95664\Desktop\
	 * @param pathName
	 * @param regPathType 路径符号类型，可选\\
	 * @return
	 */
	public static String getFilePath(String pathName,String regPathType) {
		pathName = pathName.trim();  
	   	  
        String temp[] = pathName.split("\\"+regPathType); /**split里面必须是正则表达式，"\\"的作用是对字符串转义*/  
  
        String path = "";
        for (int i = 0; i < temp.length; i++) {
       	 path += temp[i] + regPathType;
       	 if(i == temp.length-2)
       		 break;
		}
        log.info("path = " + path);
		return path;
	}
	
	/**
	 * 更改擴展名類型
	 * @param path 可以是文件夾可以是文件，傳入文件夾則文件夾下的文件都將被改動稱需要變更的擴展名類型
	 * 文件夾就只會返回最後一個路徑
	 * @param regOldType 需要變更前的擴展名名稱，例如 jpg
	 * @param regNewType 需要變更後的擴展名名稱，例如 jpeg
	 */
	public static String ChangeFileType(String path,String regOldType,String regNewType){
		File file = new File(path);
		//得到文件夹下的所有文件和文件夹
		String[] list = file.list();
		Boolean flag = null;
		String newFilePath = null;
		
		if(list!=null && list.length>0){
			for (String oldName : list) {
				File oldFile = new File(path,oldName);
				//判断出文件和文件夹
				if(!oldFile.isDirectory()){
					//文件则判断是不是要修改的
					if(oldName.contains(regOldType)){
						log.info(oldName);
						String newoldName = oldName.substring(0, oldName.lastIndexOf("."))+"."+regNewType;
						log.info(newoldName);
						File newFile = new File(path,newoldName);
						flag = oldFile.renameTo(newFile);
					}
				}else{
					//文件夹则迭代
					String newpath=path+"/"+oldName;
					ChangeFileType(newpath, regOldType, regNewType);
				}
			}
		}
		//單個文件
		else {
			String oldName = file.getName();
			String oldParent = file.getParent();
			File oldFile = new File(oldParent,oldName);
			if(oldName.contains(regOldType)){
				String newoldName = oldName.substring(0, oldName.lastIndexOf("."))+"."+regNewType;
				File newFile = new File(oldParent,newoldName);
				flag = oldFile.renameTo(newFile);
				newFilePath = newFile.getAbsolutePath();
				//删除操作
				oldFile.delete();
			}
		}
		//oldFile.renameTo有bug，总是返回false
//		if(flag == false) {
//			log.info("操作未完成，可能操作前已經更改為"+regNewType+"類型");
//			return null;
//		}
		return newFilePath;
	}
	
	/**
	 * 改變文件類型，但只是改擴展名不改變其文件內部
	 * @param fileName 不带路径的包含扩展名的文件名，例如1.jpg
	 * @param type 要變為的類型，例如jpeg
	 * @return
	 */
	public static String tempChangeFileTypeOnly(String fileName,String type){
		 String ext = "";
		 String fil = "";
		 ext = fileName.substring(fileName.lastIndexOf("."),fileName.length());
		 log.info("ext:"+ext);
		 fil = fileName.substring(0,fileName.indexOf("."));
		 log.info("fil:"+fil);
		 if(ext.equals("jpg"))
			 ext = "."+type;
		 
		 fileName = fil+ext;
		return fileName;
	}
}
